package com.myopen.interceptor;

import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.Record;
import com.myopen.config.ConstConfig;
import com.myopen.model.Website;

/**
 * 用于拦截域名，判断用户
 * @author wangsanfei
 *
 *	通过访问域名，判断用户访问的是哪个网站
 *
 */
public class CmsInterceptor implements Interceptor{

	@Override
	public void intercept(Invocation inv) {
		String serverName=inv.getController().getRequest().getServerName();
		
		Record website=(Record)inv.getController().getSession().getAttribute(ConstConfig.SESSION_WEBSIT);
		if(website==null) {
			//如果当前session是空的话，那么取一下
			
			//TODO 此处域名映射关系可以放在缓存里面
			String appHost=PropKit.get("app.host");
			if(serverName.endsWith(appHost)) {
				//如果是二级域名，那么通过二级域名做匹配
				String sld=serverName.substring(0, serverName.lastIndexOf(appHost));
				//如果serverName以appHost结尾，说明用的是二级域名,那么去数据库比对
				website=Website.dao.getMyWebsiteBySld(sld);
			}else {
				//如果不是二级域名，通过全域名做匹配
				website=Website.dao.getMyWebsiteByDomain(serverName);
			}
			
			inv.getController().getSession().setAttribute(ConstConfig.SESSION_WEBSIT,website);
		}
		
		inv.invoke();
		
	}

}
